Clp() for Automatically Proving Program Properties 1
نویسندگان
چکیده
Various proof methods have been proposed to solve the implication problem , i.e. proving that properties of the form : 8(P ! Q)-where P and Q denote conjunctions of atoms-are logical consequences of logic programs. Nonetheless, it is a commonplace to say that it is still quite a diicult problem. Besides, the advent of the constraint logic programming scheme constitutes not only a major step towards the achievement of ee-cient declarative logic programming systems but also a new eld to explore. By recasting and simplifying the implication problem in the constraint logic programming framework, we deene a generic proof method for the implication problem, which we prove sound from the algebraic point of view. We present four examples using CLP(IN), CLP(RT), CLP(() and RISC-CLP(IR). The logical point of view of the constraint logic programming scheme enables the automation of the proof method. At last, we prove the unsolvability of the implication problem, we point out the origins of the incompleteness of the proposed proof method and we identify two classes of programs for which we give a decision procedure for the implication problem.
منابع مشابه
Constraint Logic Programming for program analysis
Constraint Logic Programming (CLP) has been traditionally applied to the modelling of complex problems, especially combinatorial problems, and to model knowledge bases. In this presentation, we focus on using CLP for program analysis and verification. First we consider the representation of program behavior: the rules and constraints of CLP provides for a natural specification of programs as a ...
متن کاملProving Theorems by Program Transformation
In this paper we present an overview of the unfold/fold proof method, a method for proving theorems about programs, based on program transformation. As a metalanguage for specifying programs and program properties we adopt constraint logic programming (CLP), and we present a set of transformation rules (including the familiar unfolding and folding rules) which preserve the semantics of CLP prog...
متن کاملA Rule-based Verification Strategy for Array Manipulating Programs
We present a method for verifying properties of imperative programs that manipulate integer arrays. Imperative programs and their properties are represented by using Constraint Logic Programs (CLP) over integer arrays. Our method is refutational. Given a Hoare triple {φ} prog {ψ} that defines a partial correctness property of an imperative program prog, we encode the negation of the property as...
متن کاملHipSpec: Automating Inductive Proofs of Program Properties
We present ongoing work on HipSpec, a system for automatically deriving and proving properties about functional programs. HipSpec uses a combination of theory exploration, counter-example testing and inductive theorem proving to automatically generate a set of equational theorems about recursive functions in a program, which are later used as a background theory for proving stated properties ab...
متن کاملFoundational Issues in Implementing Constraint Logic Programming Systems
Implementations of Constraint Logic Programming (CLP) systems are often incomplete with respect to the theories they are intended to implement. This paper studies two issues that arise in dealing with these incomplete implementations. First, the notion of \satissability function" (the analogue of uniication) is formally deened, and the question of which such functions are reasonable is studied....
متن کامل